ot_admin_builtin_set_origin: don't leak options GVariant
authorSimon McVittie <smcv@debian.org>
Sun, 30 Oct 2016 14:11:23 +0000 (14:11 +0000)
committerAtomic Bot <atomic-devel@projectatomic.io>
Sun, 30 Oct 2016 21:37:38 +0000 (21:37 +0000)
Found by valgrind memcheck.

Signed-off-by: Simon McVittie <smcv@debian.org>
Closes: #559
Approved by: cgwalters

src/ostree/ot-admin-builtin-set-origin.c

index 8b32eb795988c97f2610faa1ec94547665dd15a2..0e79ab5e53f32cf53423491091f95f95a876439c 100644 (file)
@@ -96,6 +96,7 @@ ot_admin_builtin_set_origin (int argc, char **argv, GCancellable *cancellable, G
   { char **iter;
     g_autoptr(GVariantBuilder) optbuilder =
       g_variant_builder_new (G_VARIANT_TYPE ("a{sv}"));
+    g_autoptr(GVariant) options = NULL;
 
     for (iter = opt_set; iter && *iter; iter++)
       {
@@ -109,11 +110,13 @@ ot_admin_builtin_set_origin (int argc, char **argv, GCancellable *cancellable, G
         g_variant_builder_add (optbuilder, "{s@v}",
                                subkey, g_variant_new_variant (g_variant_new_string (subvalue)));
       }
-    
+
+    options = g_variant_ref_sink (g_variant_builder_end (optbuilder));
+
     if (!ostree_repo_remote_change (repo, NULL,
                                     OSTREE_REPO_REMOTE_CHANGE_ADD_IF_NOT_EXISTS, 
                                     remotename, url,
-                                    g_variant_builder_end (optbuilder),
+                                    options,
                                     cancellable, error))
       goto out;
   }